Conditions | 25 |
Total Lines | 112 |
Code Lines | 80 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
Complex classes like resize.js ➔ initResizable often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
1 | function initResizable() |
||
2 | { |
||
3 | var cookie_namespace = 'doxygen'; |
||
4 | var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; |
||
|
|||
5 | |||
6 | function readCookie(cookie) |
||
7 | { |
||
8 | var myCookie = cookie_namespace+"_"+cookie+"="; |
||
9 | if (document.cookie) { |
||
10 | var index = document.cookie.indexOf(myCookie); |
||
11 | if (index != -1) { |
||
12 | var valStart = index + myCookie.length; |
||
13 | var valEnd = document.cookie.indexOf(";", valStart); |
||
14 | if (valEnd == -1) { |
||
15 | valEnd = document.cookie.length; |
||
16 | } |
||
17 | var val = document.cookie.substring(valStart, valEnd); |
||
18 | return val; |
||
19 | } |
||
20 | } |
||
21 | return 0; |
||
22 | } |
||
23 | |||
24 | function writeCookie(cookie, val, expiration) |
||
25 | { |
||
26 | if (val==undefined) return; |
||
27 | if (expiration == null) { |
||
28 | var date = new Date(); |
||
29 | date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week |
||
30 | expiration = date.toGMTString(); |
||
31 | } |
||
32 | document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; |
||
33 | } |
||
34 | |||
35 | function resizeWidth() |
||
36 | { |
||
37 | var windowWidth = $(window).width() + "px"; |
||
38 | var sidenavWidth = $(sidenav).outerWidth(); |
||
39 | content.css({marginLeft:parseInt(sidenavWidth)+"px"}); |
||
40 | writeCookie('width',sidenavWidth-barWidth, null); |
||
41 | } |
||
42 | |||
43 | function restoreWidth(navWidth) |
||
44 | { |
||
45 | var windowWidth = $(window).width() + "px"; |
||
46 | content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); |
||
47 | sidenav.css({width:navWidth + "px"}); |
||
48 | } |
||
49 | |||
50 | function resizeHeight() |
||
51 | { |
||
52 | var headerHeight = header.outerHeight(); |
||
53 | var footerHeight = footer.outerHeight(); |
||
54 | var windowHeight = $(window).height() - headerHeight - footerHeight; |
||
55 | content.css({height:windowHeight + "px"}); |
||
56 | navtree.css({height:windowHeight + "px"}); |
||
57 | sidenav.css({height:windowHeight + "px"}); |
||
58 | var width=$(window).width(); |
||
59 | if (width!=collapsedWidth) { |
||
60 | if (width<desktop_vp && collapsedWidth>=desktop_vp) { |
||
61 | if (!collapsed) { |
||
62 | collapseExpand(); |
||
63 | } |
||
64 | } else if (width>desktop_vp && collapsedWidth<desktop_vp) { |
||
65 | if (collapsed) { |
||
66 | collapseExpand(); |
||
67 | } |
||
68 | } |
||
69 | collapsedWidth=width; |
||
70 | } |
||
71 | } |
||
72 | |||
73 | function collapseExpand() |
||
74 | { |
||
75 | if (sidenav.width()>0) { |
||
76 | restoreWidth(0); |
||
77 | collapsed=true; |
||
78 | } |
||
79 | else { |
||
80 | var width = readCookie('width'); |
||
81 | if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } |
||
82 | collapsed=false; |
||
83 | } |
||
84 | } |
||
85 | |||
86 | header = $("#top"); |
||
87 | sidenav = $("#side-nav"); |
||
88 | content = $("#doc-content"); |
||
89 | navtree = $("#nav-tree"); |
||
90 | footer = $("#nav-path"); |
||
91 | $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); |
||
92 | $(sidenav).resizable({ minWidth: 0 }); |
||
93 | $(window).resize(function() { resizeHeight(); }); |
||
94 | var device = navigator.userAgent.toLowerCase(); |
||
95 | var touch_device = device.match(/(iphone|ipod|ipad|android)/); |
||
96 | if (touch_device) { /* wider split bar for touch only devices */ |
||
97 | $(sidenav).css({ paddingRight:'20px' }); |
||
98 | $('.ui-resizable-e').css({ width:'20px' }); |
||
99 | $('#nav-sync').css({ right:'34px' }); |
||
100 | barWidth=20; |
||
101 | } |
||
102 | var width = readCookie('width'); |
||
103 | if (width) { restoreWidth(width); } else { resizeWidth(); } |
||
104 | resizeHeight(); |
||
105 | var url = location.href; |
||
106 | var i=url.indexOf("#"); |
||
107 | if (i>=0) window.location.hash=url.substr(i); |
||
108 | var _preventDefault = function(evt) { evt.preventDefault(); }; |
||
109 | $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); |
||
110 | $(".ui-resizable-handle").dblclick(collapseExpand); |
||
111 | $(window).load(resizeHeight); |
||
112 | } |
||
113 | |||
115 |